G_GNUC_BEGIN_IGNORE_DEPRECATIONS;
status = gdk_device_grab (pointer,
- mv_resize->moveresize_emulation_surface,
- GDK_OWNERSHIP_APPLICATION,
- FALSE,
- GDK_BUTTON_RELEASE_MASK |
- GDK_POINTER_MOTION_MASK,
- NULL,
- timestamp);
+ mv_resize->moveresize_emulation_surface,
+ FALSE,
+ GDK_BUTTON_RELEASE_MASK |
+ GDK_POINTER_MOTION_MASK,
+ NULL,
+ timestamp);
G_GNUC_END_IGNORE_DEPRECATIONS;
if (status != GDK_GRAB_SUCCESS)
GdkGrabStatus
gdk_device_grab (GdkDevice *device,
GdkSurface *surface,
- GdkGrabOwnership grab_ownership,
gboolean owner_events,
GdkEventMask event_mask,
GdkCursor *cursor,
_gdk_display_add_device_grab (display,
device,
surface,
- grab_ownership,
owner_events,
event_mask,
serial,
_gdk_display_add_device_grab (GdkDisplay *display,
GdkDevice *device,
GdkSurface *surface,
- GdkGrabOwnership grab_ownership,
gboolean owner_events,
GdkEventMask event_mask,
unsigned long serial_start,
info->event_mask = event_mask;
info->time = time;
info->implicit = implicit;
- info->ownership = grab_ownership;
grabs = g_hash_table_lookup (display->device_grabs, device);
return FALSE;
}
-/* Returns TRUE if device events are not blocked by any grab */
-gboolean
-_gdk_display_check_grab_ownership (GdkDisplay *display,
- GdkDevice *device,
- gulong serial)
-{
- GHashTableIter iter;
- gpointer key, value;
- GdkGrabOwnership higher_ownership, device_ownership;
- gboolean device_is_keyboard;
-
- g_hash_table_iter_init (&iter, display->device_grabs);
- higher_ownership = device_ownership = GDK_OWNERSHIP_NONE;
- device_is_keyboard = (gdk_device_get_source (device) == GDK_SOURCE_KEYBOARD);
-
- while (g_hash_table_iter_next (&iter, &key, &value))
- {
- GdkDeviceGrabInfo *grab;
- GdkDevice *dev;
- GList *grabs;
-
- dev = key;
- grabs = value;
- grabs = grab_list_find (grabs, serial);
-
- if (!grabs)
- continue;
-
- /* Discard device if it's not of the same type */
- if ((device_is_keyboard && gdk_device_get_source (dev) != GDK_SOURCE_KEYBOARD) ||
- (!device_is_keyboard && gdk_device_get_source (dev) == GDK_SOURCE_KEYBOARD))
- continue;
-
- grab = grabs->data;
-
- if (dev == device)
- device_ownership = grab->ownership;
- else
- {
- if (grab->ownership > higher_ownership)
- higher_ownership = grab->ownership;
- }
- }
-
- if (higher_ownership > device_ownership)
- {
- /* There's a higher priority ownership
- * going on for other device(s)
- */
- return FALSE;
- }
-
- return TRUE;
-}
-
GdkPointerSurfaceInfo *
_gdk_display_get_pointer_info (GdkDisplay *display,
GdkDevice *device)
gulong serial_end; /* exclusive, i.e. not active on serial_end */
guint event_mask;
guint32 time;
- GdkGrabOwnership ownership;
guint activated : 1;
guint implicit_ungrab : 1;
GdkDeviceGrabInfo * _gdk_display_add_device_grab (GdkDisplay *display,
GdkDevice *device,
GdkSurface *surface,
- GdkGrabOwnership grab_ownership,
gboolean owner_events,
GdkEventMask event_mask,
gulong serial_start,
gulong serial,
GdkSurface *if_child,
gboolean implicit);
-gboolean _gdk_display_check_grab_ownership (GdkDisplay *display,
- GdkDevice *device,
- gulong serial);
GdkPointerSurfaceInfo * _gdk_display_get_pointer_info (GdkDisplay *display,
GdkDevice *device);
void _gdk_display_pointer_info_foreach (GdkDisplay *display,
GDK_GRAB_FAILED = 5
} GdkGrabStatus;
-/**
- * GdkGrabOwnership:
- * @GDK_OWNERSHIP_NONE: All other devices’ events are allowed.
- * @GDK_OWNERSHIP_SURFACE: Other devices’ events are blocked for the grab surface.
- * @GDK_OWNERSHIP_APPLICATION: Other devices’ events are blocked for the whole application.
- *
- * Defines how device grabs interact with other devices.
- */
-typedef enum
-{
- GDK_OWNERSHIP_NONE,
- GDK_OWNERSHIP_SURFACE,
- GDK_OWNERSHIP_APPLICATION
-} GdkGrabOwnership;
-
typedef enum
{
GDK_EXPOSURE_MASK = 1 << 1,
GdkGrabStatus gdk_device_grab (GdkDevice *device,
GdkSurface *surface,
- GdkGrabOwnership grab_ownership,
gboolean owner_events,
GdkEventMask event_mask,
GdkCursor *cursor,
pointer_evmask |= TOUCH_EVENTS;
status = gdk_device_grab (priv->logical_pointer, surface,
- GDK_OWNERSHIP_NONE, owner_events,
+ owner_events,
pointer_evmask, cursor,
evtime);
}
capabilities & GDK_SEAT_CAPABILITY_KEYBOARD)
{
status = gdk_device_grab (priv->logical_keyboard, surface,
- GDK_OWNERSHIP_NONE, owner_events,
+ owner_events,
KEYBOARD_EVENTS, cursor,
evtime);
}
_gdk_display_device_grab_update (display, device, source_device, serial);
-
- if (!_gdk_display_check_grab_ownership (display, device, serial))
- {
- /* Device events are blocked by another device grab */
- unlink_event = TRUE;
- goto out;
- }
}
event_surface = gdk_event_get_surface (event);
_gdk_display_add_device_grab (display,
device,
event_surface,
- GDK_OWNERSHIP_NONE,
FALSE,
GDK_ALL_EVENTS_MASK,
serial,
_gdk_display_add_device_grab (display,
wayland_seat->logical_pointer,
surface,
- GDK_OWNERSHIP_NONE,
owner_events,
GDK_ALL_EVENTS_MASK,
_gdk_display_get_next_serial (display),
_gdk_display_add_device_grab (display,
wayland_seat->logical_touch,
surface,
- GDK_OWNERSHIP_NONE,
owner_events,
GDK_ALL_EVENTS_MASK,
_gdk_display_get_next_serial (display),
_gdk_display_add_device_grab (display,
wayland_seat->logical_keyboard,
surface,
- GDK_OWNERSHIP_NONE,
owner_events,
GDK_ALL_EVENTS_MASK,
_gdk_display_get_next_serial (display),
_gdk_display_add_device_grab (display,
tablet->logical_device,
surface,
- GDK_OWNERSHIP_NONE,
owner_events,
GDK_ALL_EVENTS_MASK,
_gdk_display_get_next_serial (display),
G_GNUC_BEGIN_IGNORE_DEPRECATIONS;
gdk_device_grab (gdk_seat_get_pointer (drag_win32->grab_seat),
drag_win32->grab_surface,
- GDK_OWNERSHIP_APPLICATION, FALSE,
+ FALSE,
GDK_POINTER_MOTION_MASK | GDK_BUTTON_RELEASE_MASK,
cursor, GDK_CURRENT_TIME);
G_GNUC_END_IGNORE_DEPRECATIONS;
* This is why we first do the grab, *then* set the op.
*/
gdk_device_grab (device, pointer_window,
- GDK_OWNERSHIP_NONE, FALSE,
+ FALSE,
GDK_ALL_EVENTS_MASK,
context->cursor,
timestamp);
G_GNUC_BEGIN_IGNORE_DEPRECATIONS;
gdk_device_grab (gdk_seat_get_pointer (x11_drag->grab_seat),
x11_drag->ipc_surface,
- GDK_OWNERSHIP_APPLICATION, FALSE,
+ FALSE,
GDK_POINTER_MOTION_MASK | GDK_BUTTON_RELEASE_MASK,
cursor, GDK_CURRENT_TIME);
G_GNUC_END_IGNORE_DEPRECATIONS;